package com.gqh.weather.util;

import java.util.regex.Pattern;

/**
 * 验证工具类
 */
public class ValidationUtil {
    
    /**
     * 手机号正则表达式
     */
    private static final Pattern MOBILE_PATTERN = Pattern.compile("^1[3-9]\\d{9}$");
    
    /**
     * 城市码正则表达式（6位数字）
     */
    private static final Pattern CITYCODE_PATTERN = Pattern.compile("^\\d{6}$");
    
    /**
     * 验证手机号格式
     * 
     * @param mobile 手机号
     * @return 是否有效
     */
    public static boolean isValidMobile(String mobile) {
        return mobile != null && MOBILE_PATTERN.matcher(mobile).matches();
    }
    
    /**
     * 验证城市码格式
     * 
     * @param citycode 城市码
     * @return 是否有效
     */
    public static boolean isValidCitycode(String citycode) {
        return citycode != null && CITYCODE_PATTERN.matcher(citycode).matches();
    }
    
    /**
     * 验证角色是否有效
     * 
     * @param role 角色：1超管 2省 3市 4区 5校
     * @return 是否有效
     */
    public static boolean isValidRole(Integer role) {
        return role != null && role >= 1 && role <= 5;
    }
    
    /**
     * 验证类型是否有效
     * 
     * @param type 类型：1管理员 2普通账号
     * @return 是否有效
     */
    public static boolean isValidType(Integer type) {
        return type != null && (type == 1 || type == 2);
    }
    
    /**
     * 验证学年格式（如：2024-2025）
     * 
     * @param schoolYear 学年
     * @return 是否有效
     */
    public static boolean isValidSchoolYear(String schoolYear) {
        if (schoolYear == null) {
            return false;
        }
        
        Pattern pattern = Pattern.compile("^\\d{4}-\\d{4}$");
        if (!pattern.matcher(schoolYear).matches()) {
            return false;
        }
        
        String[] years = schoolYear.split("-");
        int startYear = Integer.parseInt(years[0]);
        int endYear = Integer.parseInt(years[1]);
        
        return endYear == startYear + 1;
    }
    
    /**
     * 验证年级是否有效
     * 
     * @param grade 年级：1-12
     * @return 是否有效
     */
    public static boolean isValidGrade(Integer grade) {
        return grade != null && grade >= 1 && grade <= 12;
    }
}